{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "4f799dcb-812a-463b-b764-6f4e43474987",
   "metadata": {
    "tags": []
   },
   "source": [
    "# Seaborn\n",
    "\n",
    "Seaborn 用于绘制统计图，其构建于 matplotlib，并且与 pandas 数据结构集成得非常紧密。\n",
    "\n",
    "seaborn 内置一些数据，能够用于尝试绘图。通过 `load_dataset` 加载。加载的数据其实就是 pandas dataframes。也能使用pandas.read_csv() 方法读取，甚至手工构建数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "3e3a6590-9cc6-4dd5-a8fd-b71eb75d41bf",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n"
     ]
    }
   ],
   "source": [
    "tips = sns.load_dataset(\"tips\")\n",
    "print(type(tips))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "321ce373-9f9c-42e1-8211-27575750c3d0",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Seaborn 条形图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "7baa8cc0-5e69-40c0-8914-cdba1a3cc25d",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>survived</th>\n",
       "      <th>pclass</th>\n",
       "      <th>sex</th>\n",
       "      <th>age</th>\n",
       "      <th>sibsp</th>\n",
       "      <th>parch</th>\n",
       "      <th>fare</th>\n",
       "      <th>embarked</th>\n",
       "      <th>class</th>\n",
       "      <th>who</th>\n",
       "      <th>adult_male</th>\n",
       "      <th>deck</th>\n",
       "      <th>embark_town</th>\n",
       "      <th>alive</th>\n",
       "      <th>alone</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>91</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>20.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8542</td>\n",
       "      <td>S</td>\n",
       "      <td>Third</td>\n",
       "      <td>man</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Southampton</td>\n",
       "      <td>no</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>314</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>male</td>\n",
       "      <td>43.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>26.2500</td>\n",
       "      <td>S</td>\n",
       "      <td>Second</td>\n",
       "      <td>man</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Southampton</td>\n",
       "      <td>no</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>678</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>43.0</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>46.9000</td>\n",
       "      <td>S</td>\n",
       "      <td>Third</td>\n",
       "      <td>woman</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Southampton</td>\n",
       "      <td>no</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>866</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>female</td>\n",
       "      <td>27.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>13.8583</td>\n",
       "      <td>C</td>\n",
       "      <td>Second</td>\n",
       "      <td>woman</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Cherbourg</td>\n",
       "      <td>yes</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>138</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9.2167</td>\n",
       "      <td>S</td>\n",
       "      <td>Third</td>\n",
       "      <td>man</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Southampton</td>\n",
       "      <td>no</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     survived  pclass     sex   age  sibsp  parch     fare embarked   class  \\\n",
       "91          0       3    male  20.0      0      0   7.8542        S   Third   \n",
       "314         0       2    male  43.0      1      1  26.2500        S  Second   \n",
       "678         0       3  female  43.0      1      6  46.9000        S   Third   \n",
       "866         1       2  female  27.0      1      0  13.8583        C  Second   \n",
       "138         0       3    male  16.0      0      0   9.2167        S   Third   \n",
       "\n",
       "       who  adult_male deck  embark_town alive  alone  \n",
       "91     man        True  NaN  Southampton    no   True  \n",
       "314    man        True  NaN  Southampton    no  False  \n",
       "678  woman       False  NaN  Southampton    no  False  \n",
       "866  woman       False  NaN    Cherbourg   yes  False  \n",
       "138    man        True  NaN  Southampton    no   True  "
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# titanic 是 seaborn 内置的数据\n",
    "titanic=sns.load_dataset('titanic')\n",
    "\n",
    "# 随机查看几条数据，看看数据是什么样的\n",
    "titanic.sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "2b5af13e-07c0-4c8f-9e5e-db6bf1f27e49",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='class', ylabel='survived'>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkEAAAG5CAYAAACJLeBEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1EElEQVR4nO3de1yUdd7/8fcMB1FkBiggjxmUVK6l2VpE4iFNMbtdzZQ2Cw8VW5Qb2na7nV3dYjHbEmptTQOxldxSS1cp2w4Utt61t6ZbbesNZSqKeJpBFIWZ+f3ho/k1gQrDwAxer+fj4WNnvnN9v/O52C/Du+v6znWZXC6XSwAAAAZj9ncBAAAA/kAIAgAAhkQIAgAAhkQIAgAAhkQIAgAAhkQIAgAAhkQIAgAAhkQIAgAAhkQIAgAAhhTs7wICmcvlktPJBbUBAGgvzGaTTCZTk7YlBJ2B0+nSoUM1/i4DAAA0UXR0uIKCmhaCOB0GAAAMiRAEAAAMiRAEAAAMiRAEAAAMiRAEAAAMiRAEAAAMiRAEAAAMKeCuE1RWVqZ58+Zpy5YtCg8P19ixY/Xggw8qNDT0tH02b96sO++8s9HXLrroIhUXF7dWuQAAoJ0KqBBks9mUnp6uXr16KTc3V5WVlcrOzlZtba2eeOKJ0/br06ePXn/9dY+2o0eP6u6771ZKSkprlw0AANqhgApBRUVFqqmpUV5eniIjIyVJDodDc+bMUUZGhuLi4hrt17lzZ/Xr18+jbdWqVXI6nRozZkwrVw0AANqjgFoTVFJSoqSkJHcAkqTU1FQ5nU6VlpY2a6x169apV69euuKKK3xcJQAAOBcE1JGg8vJy3XLLLR5tFotFMTExKi8vb/I4Bw4c0D/+8Q/de++9La4pODigciIAAPCRgApBdrtdFoulQbvVapXNZmvyOOvXr5fD4WjxqTCz2aSoqPAWjQEAAAJTQIUgX1m7dq369Omjiy66qEXjOJ0u2e3HfFSVMe3Zs1tLly6WJE2bdre6devu54oAAOcyi6WjgoKadhYnoEKQxWJRdXV1g3abzSar1dqkMb7//ntt27ZNv/3tb31SU3290yfjGNXSpa/oiy+2SJJeffUVzZ59+m/5AQDQlgJqwUt8fHyDtT/V1dWqqqpSfHx8k8ZYu3atzGazRo8e3Rolopn27Nnlfrx7964zbAkAQNsKqBCUkpKiTZs2yW63u9uKi4tlNpuVnJzcpDH+9re/aeDAgYqNjW2tMgEAwDkgoEJQWlqawsPDlZmZqU8++URvvvmmcnJylJaW5nGNoPT0dI0YMaJB/6+++kplZWVcGwgAAJxVQIUgq9WqgoICBQUFKTMzUwsWLNCECRM0e/Zsj+2cTqccDkeD/mvXrlVoaKhGjhzZViUDAIB2yuRyuVz+LiJQORxOHTpU4+8y2rX7779bBw5USZLOPz9GeXmL/VwRAOBcFh0d3uRvhwXUkSAAAIC2QggCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGFOzvAs51ZrNJZrPJ32X4jclk8ngcHGzs3O10uuR0uvxdBgBAhKBWZTabFBnZSUFBxv3D/+MAaDabFBUV7sdq/M/hcOrIkWMEIQAIAISgVmQ2mxQUZNaLK0q1Z7/N3+X4xWH7cY/Hj7yw3o/V+Fe3WKsyb0uW2WwiBAFAACAEtYE9+236bs9hf5fhF/UOp8djo/4cAACBx7jnaQAAgKERggAAgCERggAAgCERggAAgCERggAAgCERggAAgCEFXAgqKyvT1KlT1a9fPyUnJysnJ0cnT55sUt/Kykr993//t6699lpdccUVSk1N1dtvv93KFQMAgPYooK4TZLPZlJ6erl69eik3N1eVlZXKzs5WbW2tnnjiiTP23b9/vyZNmqSLLrpIc+fOVefOnbVjx44mBygAAGAsARWCioqKVFNTo7y8PEVGRkqSHA6H5syZo4yMDMXFxZ227/z583XBBRfolVdeUVBQkCQpKSmpLcoGAADtUECdDispKVFSUpI7AElSamqqnE6nSktLT9vv6NGj2rBhg375y1+6AxAAAMCZBFQIKi8vV3x8vEebxWJRTEyMysvLT9vvyy+/VF1dnYKDgzV58mT16dNHycnJmj9/vurq6lq7bAAA0A4F1Okwu90ui8XSoN1qtcpmO/0NSA8cOCBJeuyxxzRx4kTdf//92rZtmxYuXCiz2axZs2Z5XVNwsPc50ch3j8fpMS8AIDAEVAjyltN56iad1113nWbPni1Juvbaa1VTU6OlS5cqMzNTYWFhzR7XbDYpKircp7UCFktHf5cAAFCAhSCLxaLq6uoG7TabTVar9Yz9pFPB58eSkpK0aNEi7dy5U4mJic2ux+l0yW4/1ux+PwgKMvMHDw3Y7cflcDj9XQYAnJMslo5NPuIeUCEoPj6+wdqf6upqVVVVNVgr9GMXX3zxGcc9ceKE1zXV1/PHCr7lcDiZVwAQAAJqcUJKSoo2bdoku93ubisuLpbZbFZycvJp+3Xr1k29e/fWpk2bPNo3bdqksLCws4YkAABgPAEVgtLS0hQeHq7MzEx98sknevPNN5WTk6O0tDSPawSlp6drxIgRHn2zsrL0/vvv6/e//71KS0u1aNEiLV26VFOmTFGnTp3aelcAAECAC6jTYVarVQUFBZo7d64yMzMVHh6uCRMmKCsry2M7p9Mph8Ph0TZs2DA999xzeumll7RixQrFxsbqgQce0D333NOWuwAAANqJgApBkpSQkKD8/PwzblNYWNho++jRozV69OhWqAoAAJxrAup0GAAAQFshBAEAAEMiBAEAAEMiBAEAAEMiBAEAAEMiBAEAAEMiBAEAAEMiBAEAAEMiBAEAAEMiBKFVBYdZf/Q40n+FAADwE4QgtKqIHtcq1NJNoZZuiuhxjb/LAQDALeDuHYZzS3CYVVGXjPR3GQAANMCRIAAAYEiEIAAAYEiEIAAAYEiEIAAAYEiEIAAAYEiEIAAAYEiEIAAAYEiEIAAAYEhcLBGAoVRU7FF+/mJJ0pQpd6tr125+rgiAv3AkCIChFBQs0bZtW7Vt21YtW7bE3+UA8CNCEABD2bNnl/vx7t27zrAlgHMdIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABhSsL8L+KmysjLNmzdPW7ZsUXh4uMaOHasHH3xQoaGhZ+w3bNgw7dmzp0H7tm3b1KFDh9YqFwAAtFMBFYJsNpvS09PVq1cv5ebmqrKyUtnZ2aqtrdUTTzxx1v4jR47UtGnTPNrOFp4AAIAxBVQIKioqUk1NjfLy8hQZGSlJcjgcmjNnjjIyMhQXF3fG/ueff7769evX+oUCAIB2L6DWBJWUlCgpKckdgCQpNTVVTqdTpaWl/isMAACccwIqBJWXlys+Pt6jzWKxKCYmRuXl5Wftv3btWv3sZz9T//79dffdd+ubb75prVIBAEA7F1Cnw+x2uywWS4N2q9Uqm812xr7Dhg3TFVdcoa5du2rXrl1atGiRfvnLX2rNmjXq0aOH1zUFB3ufE4OCAipjIkAwL/zLZDJ5PG7J7ziA9i2gQlBLPPbYY+7HV199tZKTk5WamqolS5boqaee8mpMs9mkqKhwH1UInGKxdPR3CYZmNps8HvM7DhhXQIUgi8Wi6urqBu02m01Wq7VZY8XGxmrAgAH68ssvva7H6XTJbj/mdf+gIDN/8NCA3X5cDofT32UYltPp8nh8+HCNH6sB4GsWS8cmH3EPqBAUHx/fYO1PdXW1qqqqGqwVaiv19fyxgm85HE7mlR+5XC6Px/x/ARhXQJ0MT0lJ0aZNm2S3291txcXFMpvNSk5ObtZYlZWV+uc//6m+ffv6ukwAAHAOCKgjQWlpaSosLFRmZqYyMjJUWVmpnJwcpaWleVwjKD09XRUVFdq4caMkad26dfrggw80ePBgxcbGateuXfrzn/+soKAgTZ061V+7AwAAAlhAhSCr1aqCggLNnTtXmZmZCg8P14QJE5SVleWxndPplMPhcD/v3r279u/fr6efflrV1dWKiIjQtddeqxkzZrTom2EAAODcFVAhSJISEhKUn59/xm0KCws9nvfr169BGwAAwJkE1JogAACAtkIIAgAAhkQIAgAAhkQIAgAAhkQIAgAAhkQIAgAAhhRwX5EH0LrMZpPHTUSNhrvIe3I6XR73UwOMhBAEGMipu6Z3lNkc5O9S/Ia7yHtyOh06fPg4QQiGRAgCDOTUUaAgfbtusY4f3Ovvcvyi7ugRj8dfFfzOf8X4WcfzuuiiMXfLbDYRgmBIhCDAgI4f3Kvjld/7uwy/cP3oljsuh8OwPwcALIwGAAAGRQgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGFNzUDe+8885mD24ymVRQUNDsfgAAAK2tySHI5XI1aNu3b5927dqliIgI9ejRQ5K0e/du2e129ezZUxdccIHvKgUAAPChJoegwsJCj+eff/657rvvPs2dO1fjxo1TcPCpoerr67Vq1So9++yzeuaZZ3xbLQAAgI94vSYoJydH48eP16233uoOQJIUHBysiRMnavz48crOzvZJkQAAAL7mdQj65ptv3KfAGtO9e3f95z//8XZ4AACAVuV1CIqNjdX69etVX1/f4LX6+nqtX79esbGxLSoOAACgtTR5TdBP3XXXXXryySc1ceJE3XbbberZs6ckaefOnSoqKtLXX3+tJ5980meFAgAA+JLXIWjSpEkym816/vnn9fjjj8tkMkk69S2y6OhozZkzRxMnTvRZoQAAAL7kdQiSpFtvvVXjxo3T9u3btXfvXklS165d9bOf/cxjsTQAAECgafEVo4ODg9W/f3+NHj1ao0ePVr9+/VoUgMrKyjR16lT169dPycnJysnJ0cmTJ5s1Rn5+vhITE5WRkeF1HQAA4NzWohB09OhR/fnPf9b06dP1i1/8Qtu2bZMkHTlyRK+++qp27tzZrPFsNpvS09NVV1en3NxcZWVlaeXKlc36qn1VVZVefPFFnXfeec16bwAAYCxeH7LZt2+fJk+erH379unCCy9UeXm5ampqJEmRkZEqKirSnj179NhjjzV5zKKiItXU1CgvL0+RkZGSJIfDoTlz5igjI0NxcXFnHWP+/PkaNmyYKioqvNovAABgDC26WGJNTY3WrFmjwsLCBrfVGD58uD799NNmjVlSUqKkpCR3AJKk1NRUOZ1OlZaWnrX/559/rvfee0+zZs1q1vsCAADj8fpIUGlpqdLT03XxxRfr8OHDDV7v0aOHe7F0U5WXl+uWW27xaLNYLIqJiVF5efkZ+zocDs2dO1e/+tWvfHp9ouBg788YBgW1eMkVzkH+nBfMSTSGeQGj8joE1dbWKjo6+rSv/3BqrDnsdrssFkuDdqvVKpvNdsa+f/nLX3T8+HFNmTKl2e97OmazSVFR4T4bD5Aki6Wjv0sAPDAnYVReh6CEhAR99tlnSktLa/T19957T5dffrnXhTXHwYMHtXDhQv3hD39QaGioz8Z1Ol2y24953T8oyMyHCxqw24/L4XD65b2Zk2iMP+ck4GsWS8cmH930OgSlp6dr9uzZSkxMVGpqqqRTF0rcuXOn8vLytHXrVuXm5jZrTIvFourq6gbtNptNVqv1tP1eeOEFJSYm6uqrr5bdbpd06tYd9fX1stvt6tSpk9df26+v54MBvuVwOJlXfhTbOUSHa+vdj8GchHF5HYLGjh2riooKvfDCC3r++eclnbqVhsvlktlsVlZWloYPH96sMePj4xus/amurlZVVZXi4+NP2+/bb7/VZ599pp///OcNXvv5z3+uxYsXKyUlpVm1ADg33XxptFxfH3I/BmBcLbqs87333quxY8fq3Xff1c6dO+V0OtWzZ0/deOONZ7zD/OmkpKRo0aJFHmuDiouLZTablZycfNp+jzzyiPsI0A+efvpphYWFaebMmUpMTGx2LQDOTbHhobrr6gv8XQaAANDie1t07drVZ4uR09LSVFhYqMzMTGVkZKiyslI5OTlKS0vzuEZQenq6KioqtHHjRknSZZdd1mAsi8WiTp066ZprrvFJbQAA4Nzi9fciJ0yYoPz8fO3bt89nxVitVhUUFCgoKEiZmZlasGCBJkyYoNmzZ3ts53Q65XA4fPa+AADAeLw+EhQUFKTs7Gzl5OToyiuv1E033aSRI0cqJiamRQUlJCQoPz//jNsUFhaedZymbAMAAIzL6yNBr7/+ut5//33NnDlTJ0+e1Lx58zRkyBDdeeedev3113Xo0CFf1gkAAOBTLbpMaNeuXXXXXXfpzTff1MaNGzVjxgzZ7XY9+eSTSklJ0fTp031VJwAAgE/57FrpPXr0UEZGhlavXq3f/e536tChgzZt2uSr4QEAAHyqxd8O+8HWrVu1YcMGFRcXa//+/erUqZPGjBnjq+EBAAB8qkUh6F//+pfWr1+v4uJi7d27V2FhYRoyZIhGjx6twYMH+/QWFgAAAL7kdQgaPny49uzZo5CQEKWkpOihhx7S0KFD1bEj9yUCAACBz+sQdPHFF+uBBx7QDTfcoM6dO/uyJgAAgFbndQhatGiRL+sAAABoU00OQRUVFZJOfS3+x8/P5oftAQAAAkmTQ9CwYcNkMpn0xRdfKDQ01P38bL7++usWFQgAANAamhyCnn76aZlMJoWEhHg8BwAAaI+aHILGjx9/xucAAADtiddXjP7oo4+4kzsAAGi3vP52WEZGhqxWq2688UaNHj1a11xzjcxmn92FAwAAoFV5HYIWL16s9evX65133tEbb7yhqKgojRw5UjfddJOuvvpqX9YIAADgc16HoEGDBmnQoEGqq6vTJ598ovXr12vt2rUqKipSTEyMRo4cqdGjR6t///6+rBcAAMAnWnwD1ZCQEA0dOlRDhw7VyZMnVVJSog0bNuiNN97Qa6+9pq+++soXdQIAAPiUTxfxHDt2TIcOHdKBAwd04sQJuVwuXw4PAADgMy0+ElRdXa13331X69ev1+bNm1VfX6/evXtrxowZGj16tC9qBAAA8DmvQ9CaNWtUXFys0tJS1dXVKT4+Xr/61a+UmpqqhIQEX9YIAADgc16HoNmzZ6tHjx6aNm2aUlNTdemll/qyLgAAgFblVQhyuVx64403dPHFFyssLMzXNQEAALQ6rxZG19XVaeLEiVq+fLmv6wEAAGgTXoWg0NBQnX/++e6bqQIAALQ3Xn9Ffty4cXrrrbd08uRJX9YDAADQJrxeGJ2YmKi///3vGjNmjMaNG6du3bo1uj7oxhtvbFGBAAAArcHrEDRz5kz34xdeeKHRbUwmk77++mtv3wIAAKDVeB2Cli1b5ss6AAAA2pTXIWjgwIG+rAMAAKBN+fTeYQAAAO2F10eC7rzzzrNuYzKZVFBQ4O1bAAAAtBqvQ1Bjd4h3Op2qqKjQ3r17deGFFyo2NrZFxQEAALQWr0NQYWHhaV/74IMP9Pjjj+u3v/2tt8MDAAC0qlZZEzR06FD913/9l55++unWGB4AAKDFWm1hdM+ePbV9+/bWGh4AAKBFWiUE1dfXa8OGDYqKimqN4QEAAFrM6zVBp1vvU11dra1bt+rAgQOaPXu214UBAAC0Jq9D0ObNmxu0mUwmWa1WDRgwQLfeequuv/76FhUHAADQWrwOQe+//74v63ArKyvTvHnztGXLFoWHh2vs2LF68MEHFRoaesZ+Dz30kLZt26b9+/crJCREvXv31r333ksQAwAAjfJ6TdDXX3+tdevWebR9/PHHuv3223Xrrbd6dZFEm82m9PR01dXVKTc3V1lZWVq5cqWys7PP2reurk5TpkzRSy+9pJycHEVGRuqee+7R559/3uw6AADAuc/rI0Hz589XWFiYxowZI0natWuX7r//fkVGRio2NlbZ2dkKCwvTpEmTmjxmUVGRampqlJeXp8jISEmSw+HQnDlzlJGRobi4uNP2/emd7FNSUnTDDTforbfe0tVXX938HQQAAOc0r48E/fvf/9aAAQPcz9966y2ZzWatXr1af/3rXzVy5EgVFRU1a8ySkhIlJSW5A5Akpaamyul0qrS0tFljBQUFKSIiQnV1dc3qBwAAjMHrI0HV1dUeYeWjjz5ScnKyoqOjJUnJyckqKSlp1pjl5eW65ZZbPNosFotiYmJUXl5+1v4ul0sOh0PV1dVatWqVdu7cqd/97nfNquGngoO9v4pAUBD3p0VD/pwXzEk0hnkBo/I6BMXExKisrEyStH//fn355ZcaP368+/WamhqZzc37xbLb7bJYLA3arVarbDbbWfu/8cYbeuyxxyRJnTp10h//+Ef179+/WTX8mNlsUlRUuNf9gcZYLB39XQLggTkJo/I6BN1www1avny5Tp48qS+++EKhoaEaMWKE+/VvvvlGPXr08EmRzanp0ksv1eHDh1VcXKwHH3xQeXl5Gjx4sFfjOZ0u2e3HvK4nKMjMhwsasNuPy+Fw+uW9mZNojD/nJOBrFkvHJh/d9DoEPfjggzp06JDeeustRURE6JlnntH5558vSTp69KiKi4t1++23N2tMi8Wi6urqBu02m01Wq/Ws/aOjo92n41JSUmSz2TR//nyvQ5Ak1dfzwQDfcjiczCsEFOYkjMrrEBQeHq4FCxY0+lqnTp1UUlKisLCwZo0ZHx/fYO1PdXW1qqqqFB8f3+wa+/Tp0+x1SQAAwBhaZTWc2WxWRESEQkJCmtUvJSVFmzZtkt1ud7cVFxfLbDYrOTm52XX885//bPNTcgAAoH3w+khQa0hLS1NhYaEyMzOVkZGhyspK5eTkKC0tzeMaQenp6aqoqNDGjRslSR9++KHWrFmjIUOGqEuXLrLZbFq3bp0++eQTPffcc/7aHQAAEMACKgRZrVYVFBRo7ty5yszMVHh4uCZMmKCsrCyP7ZxOpxwOh/t5jx49dPLkSS1YsECHDx9WVFSUEhMTVVhYqIEDB7b1bgAAgHYgoEKQJCUkJCg/P/+M2xQWFjbo89JLL7ViVQAA4FwTcCEIAAAjqajYo/z8xZKkKVPuVteu3fxckXFwmVAAAPyooGCJtm3bqm3btmrZsiX+LsdQCEEAAPjRnj273I937951hi3ha4QgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSMH+LgAAYGxms0lms8nfZfiNyWTyeBwcbOzjE06nS06nq03eixAEAPAbs9mkyKiOCjIH+bsUv/lxADSbTYqKCvdjNf7ncDp05PDxNglChCAAgN+YzSYFmYP08kfLVGGr9Hc5fnHkmM3j8ZNvz/djNf7V1RqnjMF3ymw2EYIAAMZQYavUzoO7/V2GX9Q7HR6Pjfpz8Adjn3gEAACGRQgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGRAgCAACGFHB3kS8rK9O8efO0ZcsWhYeHa+zYsXrwwQcVGhp62j779+9Xfn6+SktL9f333ysiIkI///nPNXPmTHXr1q0NqwcAAO1FQIUgm82m9PR09erVS7m5uaqsrFR2drZqa2v1xBNPnLbfl19+qY0bN+qWW27RlVdeqcOHD+tPf/qTbr31Vq1bt07R0dFtuBcAAKA9CKgQVFRUpJqaGuXl5SkyMlKS5HA4NGfOHGVkZCguLq7RfgMGDNCGDRsUHPz/d+eqq67SkCFDtGbNGk2bNq0tygcAAO1IQK0JKikpUVJSkjsASVJqaqqcTqdKS0tP289isXgEIEm64IILFB0drf3797dWuQAAtFiItUOjj9H6AioElZeXKz4+3qPNYrEoJiZG5eXlzRrr22+/1cGDB5WQkODLEgEA8KnIAV0U1qWzwrp0VuSALv4ux1AC6nSY3W6XxWJp0G61WmWz2Zo8jsvl0rx58xQbG6ubbrqpRTUFB3ufE4OCAipjIkD4c14wJ9EY5qR/hVg7KOaGXv4uI6C01bwIqBDkK7m5ufrHP/6hV155RZ06dfJ6HLPZpKiocB9WBkgWS0d/lwB4YE4i0LTVnAyoEGSxWFRdXd2g3WazyWq1NmmMlStX6sUXX9Tvf/97JSUltagep9Mlu/2Y1/2Dgsx8uKABu/24HA6nX96bOYnGMCcRaFoyJy2Wjk0+khRQISg+Pr7B2p/q6mpVVVU1WCvUmI0bN+qpp57SjBkzNGHCBJ/UVF/vnw8GnLscDifzCgGFOYlA01ZzMqBOxqakpGjTpk2y2+3utuLiYpnNZiUnJ5+x7+bNmzVz5kzdeuutyszMbO1SAQBAOxdQISgtLU3h4eHKzMzUJ598ojfffFM5OTlKS0vzuEZQenq6RowY4X5eVlamzMxM9erVS2PHjtXWrVvd/77//nt/7AoAAAhwAXU6zGq1qqCgQHPnzlVmZqbCw8M1YcIEZWVleWzndDrlcDjcz7/44gtVV1erurpat912m8e248aNU3Z2dpvUDwAA2o+ACkGSlJCQoPz8/DNuU1hY6PF8/PjxGj9+fCtWBQAAzjUBdToMAACgrRCCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIRGCAACAIQVcCCorK9PUqVPVr18/JScnKycnRydPnjxrv9dee00ZGRm69tprlZiYqOLi4jaoFgAAtFcBFYJsNpvS09NVV1en3NxcZWVlaeXKlcrOzj5r37feekuHDx/W4MGD26BSAADQ3gX7u4AfKyoqUk1NjfLy8hQZGSlJcjgcmjNnjjIyMhQXF3fGvmazWbt379aaNWvapmAAANBuBdSRoJKSEiUlJbkDkCSlpqbK6XSqtLT0jH3N5oDaFQAAEOACKjmUl5crPj7eo81isSgmJkbl5eV+qgoAAJyLAup0mN1ul8ViadButVpls9n8UJEUHOx9TgwKCqiMiQDhz3nBnERjmJMING01LwIqBAUas9mkqKhwf5eBc4zF0tHfJQAemJMING01JwMqBFksFlVXVzdot9lsslqtbV6P0+mS3X7M6/5BQWY+XNCA3X5cDofTL+/NnERjmJMINC2ZkxZLxyYfSQqoEBQfH99g7U91dbWqqqoarBVqK/X1/vlgwLnL4XAyrxBQmJMING01JwPqZGxKSoo2bdoku93ubisuLpbZbFZycrIfKwMAAOeagDoSlJaWpsLCQmVmZiojI0OVlZXKyclRWlqaxzWC0tPTVVFRoY0bN7rbtm/frj179ujQoUOSpC+++EKSFB0drYEDB7btjgAAgIAXUCHIarWqoKBAc+fOVWZmpsLDwzVhwgRlZWV5bOd0OuVwODzaXnvtNa1evdr9fOnSpZKkgQMHqrCwsPWLBwAA7UpAhSBJSkhIUH5+/hm3aSzUZGdnN+n2GgAAAFKArQkCAABoK4QgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSIQgAABgSAEXgsrKyjR16lT169dPycnJysnJ0cmTJ8/az+Vy6c9//rOGDBmiK664QpMmTdLWrVtbv2AAANAuBVQIstlsSk9PV11dnXJzc5WVlaWVK1cqOzv7rH0XL16shQsXasqUKXr55ZcVExOjadOmadeuXW1QOQAAaG+C/V3AjxUVFammpkZ5eXmKjIyUJDkcDs2ZM0cZGRmKi4trtN+JEyf08ssva9q0aZoyZYokacCAARo1apSWLFmip556qm12AAAAtBsBdSSopKRESUlJ7gAkSampqXI6nSotLT1tv//93//V0aNHlZqa6m4LDQ3ViBEjVFJS0polAwCAdiqgjgSVl5frlltu8WizWCyKiYlReXn5GftJUnx8vEd7QkKCCgoKVFtbq7CwsGbXYzabFB0d3ux+PzCZTv3vf08fJofD6fU4ODcEBZ36bw6rtaNcLv/U8MOcvGTCg3I5Hf4pAgHDZA6SFBhzctaIX6meOWl4wT6Yk2azqenv591btA673S6LxdKg3Wq1ymaznbFfaGioOnTo4NFusVjkcrlks9m8CkEmk0lBQU3/YZ6OtXPz3xvnLrPZ/wdgQ8Ib/p7BuAJhTlo6Rvi7BASQtpqT/p/5AAAAfhBQIchisai6urpBu81mk9VqPWO/kydP6sSJEx7tdrtdJpPpjH0BAIAxBVQIio+Pb7D2p7q6WlVVVQ3W+/y0nyR9++23Hu3l5eXq2rWrV6fCAADAuS2gQlBKSoo2bdoku93ubisuLpbZbFZycvJp+1111VXq3LmzNmzY4G6rq6vTu+++q5SUlFatGQAAtE8BtTA6LS1NhYWFyszMVEZGhiorK5WTk6O0tDSPawSlp6eroqJCGzdulCR16NBBGRkZys3NVXR0tHr37q0VK1boyJEjmj59ur92BwAABLCACkFWq1UFBQWaO3euMjMzFR4ergkTJigrK8tjO6fTKYfD86uUd999t1wul5YuXapDhw7psssu05IlS9SjR4+23AUAANBOmFwuf10dAgAAwH8Cak0QAABAWyEEAQAAQyIEAQAAQyIEAQAAQyIEAQAAQyIEAQAAQyIEoclyc3OVmJjY4N+YMWOUmJioJUuWtPg9vv76a+Xm5ur48eM+qBjt0dtvv60JEyZowIABuuqqq5SamqpHH31UBw8e9Hdpzfbee+8pMTFRu3fv9ncpaCWNfSb+9N+qVau0efNmJSYmavv27Wccb/bs2RozZozX9dx333264447vO5vNAF1sUQEvrCwMBUUFDRoq62tVdeuXVs8/tdff628vDzdfvvt6tixY4vHQ/uyePFiLViwQFOmTNGMGTPkcrm0Y8cOrV27Vvv379d5553n7xIBD6+//rrH80mTJumOO+7wCDI9e/bUjh07mjTefffdp2PHjvm0RpweIQjNYjab1a9fv2b3czgccjqdCgkJ8X1ROGcUFhZq3Lhxmj17trtt8ODBuuuuu+R0Ov1YGdC4xj4Pu3Tp4tXnpHQqMJ1NbW0tNwb3EU6HwSd+ejrsjjvuUEZGhlavXq2RI0eqb9+++ve//y273a7HHntMgwYNUt++fTV48GD3bVFWrVql3/72t5KkpKQkJSYmatiwYX7ZH/iH3W5XbGxso6+ZzZ4fV6tWrdLNN9+svn37atCgQfrjH//Y4HY6lZWVevjhh3Xdddfpiiuu0KhRozyOZDqdTr300ksaNmyYfvazn2nUqFEqKiryGCM3N1f9+/fXN998o9tuu01XXnmlxowZo48//thju7q6Ov3+97/XwIEDNWDAAD3yyCOqqalpyY8D5yC73a5Zs2apf//+Gjp0qBYvXuzx+k9Ph61atUqJiYnasmWLpk6dqn79+iknJ0eSVFZWpsmTJ6tv374aPny4Vq9e3ab7ci7gSBCarb6+3uN5UFBQo9v961//0p49e/TrX/9aFotFXbp00TPPPKOPP/5Ys2bNUrdu3VRVVaWSkhJJ0pAhQ3TvvffqT3/6k1555RVFREQoNDS01fcHgaNPnz4qKipS9+7dNWTIEMXExDS63auvvqr58+crPT1ds2fPVllZmTsEPfTQQ5Kkw4cPa9KkSZKkrKwsde/eXTt37tT333/vHicnJ0fLli3Tvffeq/79++vDDz/Uk08+qfr6ek2ePNm9XV1dnR566CHdeeeduu+++7R48WLNmDFD77//vqKioiRJzz33nFasWKEHHnhAl19+uf72t79pwYIFrfWjQjv15JNPauzYsXrxxRf13nvv6dlnn1ViYqJSUlLO2G/WrFmaNGmSMjIy1LFjR504cULTpk1Tx44d3aFo4cKFOnr0qHr16tUGe3JuIAShWY4dO6Y+ffp4tP3wC/hTNptNb7zxhrp06eJu2759u8aMGaNx48a522666SZJUnR0tPtQcJ8+fRQdHe3r8hHgnnzySd1///167LHHJEndu3fX0KFDNWXKFHXv3l2SdPToUS1cuFB33XWXZs6cKUlKTk5WSEiIsrOzNX36dEVFRSk/P18HDx7Uhg0b3H2TkpLc73Xo0CEtX75c06dP1wMPPCBJuv7663X48GG9+OKLuu2229wB/4cQNHjwYEnSRRddpBtuuEElJSUaO3asjhw5or/85S+6++67lZGRIUkaNGiQJk+erMrKyjb4yaG9uPHGG93zLSkpSR9++KHeeeeds4agtLQ03XPPPe7nK1as0P79+7VhwwZ36Ln88ss1atQoQlAzEILQLGFhYVq+fLlHW48ePRrdtnfv3h4BSDr1S7p69WrFxMRo0KBB6t27d6vVivand+/eWrdunT799FN98skn+uyzz1RYWKhVq1bptdde02WXXaYtW7bo2LFjGjVqlMdRyeuuu061tbXasWOHBg4cqE8//VTXXnutOwD91LZt21RXV6dRo0Z5tKempmrdunX67rvvlJCQIOnUqbgfB6ju3bsrLCzMHXD+85//qLa2ViNGjPAY68Ybb9Rnn33mk58Nzg3XX3+9+7HJZFJCQoL27dt31n5DhgzxeL5t2zZdcsklHoHnwgsv1KWXXuqrUg2BEIRmMZvN6tu3b5O2Pf/88xu0Pf7447JarXr11VeVk5OjLl266J577tEvf/lLX5eKdio0NFSDBw92H3X5+OOPlZGRoRdffFF5eXk6fPiwJHkcTfyxvXv3SpKOHDmiSy655LTvY7PZJDWcpz88P3LkiLstLCyswanZkJAQnThxQpJUVVUlSQ2+vdbY7wCMLSIiwuN5SEiIqqurz9rvp3PpdN+WPO+8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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 条形图，x轴为 \"class\" 列， y 轴为 'survived' 列\n",
    "sns.barplot(x='class',y='survived',data=titanic)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "164fad80-d5d7-4290-be35-280b51625f92",
   "metadata": {
    "tags": []
   },
   "source": [
    "## 热力图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "e7c54283-6165-4c86-8f9e-2b601042dc45",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[3 1 0]\n",
      " [0 4 0]\n",
      " [1 0 3]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(46.25, 0.5, 'true')"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiUAAAHPCAYAAACMWqqSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABB9ElEQVR4nO3deVxV9b7/8fd2AJwAOaIlOIQFmYKaI3rEBEv5NVjXIRsIxaN00lKrmzRo2qTZbRI9TuFYmjZZlppDZqWmaakdTwNKGaKiSbAhmff6/bGvXHeggm5ZS/fr2YNH7e+aPpjhp8/n+/0um2EYhgAAAExWw+wAAAAAJJISAABgESQlAADAEkhKAACAJZCUAAAASyApAQAAlkBSAgAALIGkBAAAWAJJCQAAsASSEsAEK1euVL9+/dSmTRt16tTJ7fdPTk5WWFiY2+97qdu+fbvCwsK0fft2s0MBUIFaZgcAeJoDBw7o8ccfV8+ePTVy5Ej5+PiYHdIladWqVTpx4oSGDh1qdigA3MTGu2+A6rVs2TJNmjRJ69atU4sWLS7KM0pKSlRaWipvb++Lcn8rSExMVGpqqj777LNKX+NwOFRcXKzatWurRg0KxYDVUCkBqtmJEyckSQ0aNLhoz6hVq5Zq1eI/71MKCwvLEpHLOVEDLnX8rwI8WmZmpp544gn9/e9/V9u2bRUdHa2nn35aRUVFZeekp6froYceUpcuXdSuXTsNHjxYn3/+uct9Ts1VWL16tWbNmqWoqCiFh4crPj5eBw8eLDsvOjpaycnJkqTIyEiFhYWVfT79n08XHR2tpKSkss/FxcWaMWOGbrrpJoWHh6tr16666667tGXLlrJzKppTUlJSopkzZ6pPnz5l3+srr7zi8r2eel5iYqJ27typgQMHKjw8XDExMVq5cuU5fz0PHTqksLAwpaSk6K233lJMTIzatWunhIQEHTlyRIZhaObMmYqKilJERIT++c9/Kjs72+UeGzZs0MiRI8v+nfTp00czZ85UaWlp2TlxcXH6/PPPlZGRobCwMIWFhSk6Otrl38Unn3yiV199VT179lS7du2Ul5dXbk7JgQMHFBERoccee8wlhp07d6p169Z66aWXzvk9A3Af/lcKHiszM1MDBw5Ubm6uBg8erJCQEGVmZurTTz9VQUGBvLy89Pvvv2vIkCHKz89XXFycGjZsqA8++ED//Oc/NX36dN14440u95w3b55sNpsSEhKUl5enN954Q48++qjeeecdSdITTzyhlStXav369Zo0aZLq1q1b5QmpM2bM0Jw5czRo0CBFREQoLy9P//73v7Vv3z716NHjjNc99dRT+uCDD9S3b18NGzZMe/fu1Zw5c3TgwAHNnDnT5dyDBw9qzJgxGjhwoO644w699957SkpKUps2bXTNNdecM8ZVq1apuLhYcXFxys7O1htvvKGxY8eqW7du2r59u0aMGKGDBw/qzTff1IsvvqgpU6aUXfvBBx+obt26GjZsmOrWrauvv/5a06dPV15ensaPHy9Juv/++5Wbm6ujR4/q8ccflyTVq1fPJYZ//etfql27toYPH66ioiLVrl27XJytWrXSmDFjNG3aNPXt21cxMTE6efKkHn/8cYWEhGjMmDHn/F4BuJEBeKjHHnvMuPbaa429e/eWO+ZwOAzDMIznn3/eCA0NNb755puyY3l5eUZ0dLTRu3dvo7S01DAMw/j666+N0NBQIzY21igsLCw7d9GiRUZoaKjx008/lY1Nnz7dCA0NNU6cOOHyzNDQUGP69OnlYundu7cxfvz4ss+33XabMXLkyLN+b6eeccoPP/xghIaGGk8++aTLeVOnTjVCQ0ONbdu2uTzvr9/ziRMnjLZt2xpTp04963PT09ON0NBQo1u3bobdbi8bf/nll43Q0FDjtttuM4qLi8vGH374YaNNmzYuv2b5+fnl7jthwgSjXbt2LueNHDnS6N27d7lzT/27iImJKXevU8e+/vrrsrHS0lLjrrvuMrp3725kZWUZkydPNq677roKf18AuLho38AjORwObdiwQb1791Z4eHi54zabTZK0efNmRUREuCzbrVevnu68805lZGRo//79Ltf913/9l7y8vMo+n7ouPT3dbbH7+voqNTVVv/76a6Wv2bx5syRp2LBhLuMJCQkux0+5+uqrXb7ngIAAXXXVVZX+Pvr16+cyZyYiIkKSdNttt7nMdYmIiFBxcbEyMzPLxk5fjZSXl6esrCx16tRJ+fn5SktLq9TzJen222+v1MqmGjVqaOrUqTp58qRGjBihpUuXauTIkRX+vgBwcZGUwCNlZWUpLy/vnK2Iw4cP66qrrio3HhISUnb8dE2bNnX57OvrK0my2+0XEq6Lhx56SLm5uerbt69uvfVWvfjii/rxxx/Pek1GRoZq1Kih5s2bu4wHBgbK19dXGRkZLuNXXnlluXv4+fkpJyenUjH+9fpTCcqZxk+/b2pqqkaNGqWOHTuqY8eOioyM1H//939LknJzcyv1fEkKDg6u9LnNmzfX6NGj9f333+uaa67RAw88UOlrAbgPc0oANzrTMlPjAlbenz7BU5I6d+6s9evXa+PGjdqyZYveffddLVq0SJMnT9agQYPOeq9TFaBzqVmz5nnHe7brz/XrY7fbde+996p+/fp66KGH1Lx5c3l7e2vfvn36n//5HzkcjkrHUNX9X05NFD527Jiys7MVGBhYpesBXDgqJfBIAQEBql+/vlJTU896XtOmTfXLL7+UGz/VRvhrZeRC+Pn5lauoFBUV6fjx4+XO9ff314ABA/TKK6/o888/P+PKnVOCgoLkcDhcVgJJ0u+//y673a6goCD3fBMXaMeOHcrOztbUqVMVHx+v3r17q3v37vLz8yt3bmUTrMpYtmyZtmzZonHjxqmoqEgTJ050270BVB5JCTxSjRo11KdPH23atEnff/99ueOn/s+9V69e2rt3r7777ruyYydPntSKFSsUFBSkq6++2m0xNWvWTDt37nQZW7FiRblKyR9//OHyuV69emrevHm5pb2n69WrlyRp0aJFLuMLFixwOW62U5WU0ytLRUVFWrp0ablz69SpU6V2zpmkp6eXrb65//77NX78eH322WeVWgINwL1o38BjPfzww9qyZYvi4uI0ePBgtWrVSsePH9fatWu1dOlS+fr6auTIkfrkk080YsQIxcXFyc/PTytXrtShQ4eUnJzs1l1BBw0apKeffloPPvigunfvrh9//FFfffWVGjZs6HLezTffrC5duqhNmzby9/fX999/r08//VT33nvvGe997bXX6o477tDy5ctlt9vVuXNnff/99/rggw/Up08fdevWzW3fx4Xo0KGD/Pz8lJSUpLi4ONlsNn344YcVtr/atGmj1atXa8qUKQoPD1fdunXL9iqpLMMw9MQTT8jHx0eTJk2SJA0ZMkTr1q3T888/r8jISDVp0sQd3xqASiApgcdq0qSJVqxYoddff12rVq1SXl6emjRpoqioqLL5CI0aNdLbb7+tl156SW+++aYKCwsVFham2bNn64YbbnBrPIMHD9ahQ4f07rvv6ssvv1THjh21YMGCcu92iYuL02effaYt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TZ+7SH6+DXTPQPdNtMOliZ8P5rHCnJK/2rlzp1avXq2EhIQznmO32+Xl5VXu942vr68Mw1BOTk6VnnlelZJzueGGG/T666/r6aefvhi3xwU4euSYmgZdUW78yiucZdkjRzKrOySY6GB6ht79aK3GPzRSx37PKhsvKixSSUmJMo5kqn69uvLzbWBilKgu/Hy4PFSlEnImR48e1bhx49S1a9dqLQRclKQkPT1dRUVFVbrm1ltvrdR5f/755/mEhP+1Z88+3XBDdzVoUN9lMluXLh0kSbv37DMrNJgg8/gJORwOTXlttqa8Vn75b9+BQ3XvoP5KGstGap6Anw/msdI7a+x2u0aMGCF/f38lJydXOMH1FF9fXxUVFamwsNClWmK322Wz2eTn51elZ59XUvLNN99UOG6327Vz504tWbLknD2tv0pLS9PVV1+t66677qznZWRk6MiRI1W6N/7Pe+9/okce+adG/OOesn0IvLy8FH/fndq+/Vtm1nuYa0Ja6PUpE8qNJ89drD9P5itpbKKaBV1pQmQwAz8fzGOBea6SpIKCAiUmJio3N1fLly9XgwZnr5Kemkvyyy+/6Nprry0bT0tLU9OmTas0n0Q6z6QkLi6uwo1UDMNQzZo11a9fPz311FNVuuc111yjFi1aaMqUKWc979NPPz1jUoRz2/HNd3rn3VV6/rnH1bhxI+3f/6vuixukli2DNTLxEbPDQzVr6O+nmKju5caXrFgpSRUew+WLnw+eraSkRGPHjlVaWpreeustNWly7tVW119/verXr681a9aUJSXFxcVat26doqKiqhzDeSUlixcvLjdms9nk6+uroKCgM87SPZuIiAh9+WXldtW8wE1oPd7QYWP0zKT/1j13D1DDhn76/vsf1P/2eH351XazQwNgMn4+mMMK7ZvJkydr06ZNSkpKUl5ennbv3l127LrrrnNWzeLjdfjw4bLlvt7e3kpMTFRycrICAgIUGhqqZcuWKTs7W8OHD69yDFXeZr6oqEhffvmlgoKCXEo1F+q3335TamrqOds+BQUFOnHihIKCLmybeE/dZh4VY5t5nM5Tt5nHmV3sbea3XDHQbffqcfTd87ouOjpaGRkVf58bN25UcHCw4uLilJGRoc8++6zsmGEYmjt3brlt5jt06FDlGKqclBiGofDwcD355JO66667qvxAqyApwelISnA6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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 演示用热力图画个混淆矩阵\n",
    "\n",
    "import seaborn as sns\n",
    "from sklearn.metrics import confusion_matrix\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "sns.set()\n",
    "f,ax = plt.subplots()\n",
    "y_true = [0,0,1,2,1,2,0,2,2,0,1,1]\n",
    "y_pred = [1,0,1,2,1,0,0,2,2,0,1,1]\n",
    "C2 = confusion_matrix(y_true,y_pred,labels=[0,1,2])\n",
    "print(C2)\n",
    "sns.heatmap(C2,annot=True,ax=ax)\n",
    "ax.set_title('confusion matrix')\n",
    "ax.set_xlabel('predict')\n",
    "ax.set_ylabel('true')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
